424C - Magic Formulas - CodeForces Solution


math *1600

Please click on ads to support us..

Python Code:

n = int(input())
arr = list(map(int,input().split()))

xor = [0] * (n+1)

x = 0
for i in range(1,n+1):
	x ^= i
	xor[i] = x

ans = 0

for i in range(1,n+1):
	q = n // i
	r = n % i
	ans ^= arr[i-1]
	if q % 2:
		ans ^= xor[i-1] 
		if r:
			ans ^= xor[r]
	else:
		if r:
			ans ^= xor[r]

print(ans)

C++ Code:

//
// Created by Xiuyuan Cao on 2023/2/22.
//

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <queue>
#include <limits>
using namespace std;

typedef long long ll;


void solve(){
    int n;
    cin>>n;
    int p[n];
    for(int i=0;i<n;i++){
        cin>>p[i];
    }
    int res=0;
    for(int i:p){
        res^=i;
    }
    vector<int> preXor(n+1);
    for(int i=1;i<=n;i++){
        preXor[i]=(preXor[i-1]^i);
    }
    for(int mod=2;mod<=n;mod++){
        int group=n/mod;
        int rest=n%mod;
        res^=preXor[rest];
        if(group%2==1){
            res^=preXor[mod-1];
        }
    }
    cout<<res;

}


int main(){
    solve();
}


Comments

Submit
0 Comments
More Questions

1516A - Tit for Tat
622. Design Circular Queue
814. Binary Tree Pruning
791. Custom Sort String
787. Cheapest Flights Within K Stops
779. K-th Symbol in Grammar
701. Insert into a Binary Search Tree
429. N-ary Tree Level Order Traversal
739. Daily Temperatures
647. Palindromic Substrings
583. Delete Operation for Two Strings
518. Coin Change 2
516. Longest Palindromic Subsequence
468. Validate IP Address
450. Delete Node in a BST
445. Add Two Numbers II
442. Find All Duplicates in an Array
437. Path Sum III
436. Find Right Interval
435. Non-overlapping Intervals
406. Queue Reconstruction by Height
380. Insert Delete GetRandom O(1)
332. Reconstruct Itinerary
368. Largest Divisible Subset
377. Combination Sum IV
322. Coin Change
307. Range Sum Query - Mutable
287. Find the Duplicate Number
279. Perfect Squares
275. H-Index II